//普通的递归
function flatten1(arr) {
    let result = []
    arr.forEach(item => {
        if (Array.isArray(item)) {
            //因为函数返回值是单个数组，因此当有数组嵌套的时候就要concat
            result = result.concat(flatten1(item))
        } else {
            result = result.concat(item)
        }
    });
    return result
}
//利用reduce
function flatten3(arr) {
    return arr.reduce(function(perv,next){
        return perv.concat(Array.isArray(next)?flatten3(next):next)
    },[])
}


// 扩展运算符
function flatten2(arr) {
    let result = [...arr]
    while (result.some(item => Array.isArray(item))) {
        result = [].concat(...result)
    }
    return result
}
//利用split 和 toString
function flatten4(arr){
    console.log(arr.toString())
    return arr.toString().split(',')
}
//调用ES6中的flat
function flatten5(arr){
    return arr.flat(Infinity)
}
//正则和JSON方法共同处理
function flatten6(arr){
    let str = JSON.stringify(arr)
    str = str.replace(/(\[|\])/g,'')
    str = '['+str+']'
    console.log("6------",str)
    console.log("JSON.parse(str)",JSON.parse(str))
    return JSON.parse(str)
    
}